//  封装axios
import axios from 'axios';
import { Toast } from 'vant';
import router from '@/router/index';
// console.log('process.env.NODE_ENV', process.env.NODE_ENV);
// 上线之后 process.env.NODE_ENV == production
let baseUrl = '';
if (process.env.NODE_ENV == 'development') {
    // 说明现在在开发服务器运行项目
    baseUrl = '/api'
} else {
    // 说明现在在线上运行
    baseUrl = 'http://47.94.148.165:3001'
}

// 创建一个axios 的实例对象
const instance = axios.create({
    baseURL: baseUrl, //项目请求的基础路径
    timeout: 80000, //请求的时长设置 
    // 设置post 请求传递给后端的参数的格式
    headers: { 'Content-Type': 'application/json' }  //请求头 一般只对post 请求起作用
});

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    //  一般设置token,给请求头设置token
    // console.log('config', config);
    let token = localStorage.getItem('token'); // null或 '2eeewqewqeq'
    if (token) {
        config.headers.token = token
    }

    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    // 01: 可以在该处对所有的响应做配置, 根据状态码设置提示等等
    // console.log('response', response);
    if (response.data.code == '10119') {
        // 说明当前的token 失效了
        Toast({
            type: 'fail',
            message: 'token失效,请重新登录',
            duration: 1000,
            onClose() {
                router.push('/login')
            }
        })
    }
    return response.data;
}, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
});

export default instance
